package feeinterface.protocol.req;

import org.apache.log4j.Logger;

import com.ulwx.tool.HttpUtils;
import com.ulwx.tool.ImageUtils;

import feeinterface.protocol.res.Res010004;
import feeinterface.protocol.utils.Constants;

/**
 * 图片验证码响应（010004） 请求URL ：http://<ip>:<port>/interface/exchange
 * 
 * @author 黄杰
 * 
 */
public class Pro010004 extends ProExchange {
	/**
	 * 日志
	 */
	private  static  Logger log = Logger.getLogger(Pro010004.class); // 跟类名一样

	@Override
	public Object genBean() throws Exception {
		Res010004 res = new Res010004();
		// 解析图片
		try {
			// 本地解析图片的系统方法
			String validateCode = ImageUtils.getValidateCode(this.packet);
			if (!"".equals(validateCode) || !"0".equals(validateCode)) {
				log.debug("解析的图片验证码是：" + validateCode);
				res.ValidateCode = validateCode;
				res.Status = Constants.Status.SUCCESS;
				res.Message = "成功";
				return res;
			}
			// 第三方解析图片验证码
			// 第三方图片解析URL
			String url = "";
			// POST到第三方解析图片
			res.ValidateCode = HttpUtils.post(url, this.packet, "TEXT/HTML",
					"UTF-8", Constants.HTTP.TimeOut);
			if (!"".equals(validateCode) || !"0".equals(validateCode)) {
				log.debug("第三方解析的图片验证码是：" + validateCode + " 访问URL：" + url);
				res.ValidateCode = validateCode;
				res.Status = Constants.Status.SUCCESS;
				res.Message = "成功";
				return res;
			}
			log.debug("解析失败");
			res.ValidateCode = "";
			res.Status = Constants.Status.FAIL;
			res.Message = "失败";

		} catch (Exception e) {
			log.error("解析的图片验证码出错！", e);
			throw new ExchangeException(Constants.Status.FAIL, "解析的图片验证码出错！");
		}
		return res;
	}

	@Override
	public String validate() throws Exception {
		if (packet == null)
			return "网络繁忙，请重新登录再试!";
		return null;
	}

	/**
	 * 付费记录编号，32位随机编号
	 */
	public String FeeID;
	/**
	 * 计费类型，由服务端定义，每个值的含义到时候见附件。1：短信 2：彩信 等等
	 */
	public Integer FeeType;
	/**
	 * 版本号id，函数库的版本号
	 */
	public Integer Ver;
	/**
	 * 包id
	 */
	public String PacketID;
	/**
	 * 虚拟机版本号
	 */
	public Integer VmVer;
	/**
	 * 平台简称
	 */
	public String Platform;
	/**
	 * 短信中心号码，允许为空
	 */
	public String SmsCenter;
	/**
	 * 手机卡串号
	 */
	public String IMSI;
	/**
	 * 合作业务ID，后台通过此id可以找到对应的产品，产品的概念：好玩吧 ，哈密瓜等
	 */
	public Integer COID;
	/**
	 * 包含验证码的图片
	 */
	public byte[] packet;

	/**
	 * 无参构造函数
	 */
	public Pro010004() {
		this.Protocol = "010004";
	}

}
